On deriving data parallel code from a functional program
نویسندگان
چکیده
We discuss a translation methodology for transforming a high level algorithmic speciication written in Alpha to an imperative data parallel language. We informally introduce the Alpha language with the aid of an example and explain how it is adapted for doing static analysis and transformation. An Alpha program can be naively compiled 11] using applicative caching. Our compilation method makes incremen-tal transformations on the abstract syntax tree of an Alpha program in order to make eeciency and performance improvements over the naive code and optimize it for a given architecture. The compilation steps described include scheduling, alignment, partitioning, allocation, loop nest generation, and code generation and they are illustrated with an example.
منابع مشابه
A Message-Passing Distributed Memory Parallel Algorithm for a Dual-Code Thin Layer, Parabolized Navier-Stokes Solver
In this study, the results of parallelization of a 3-D dual code (Thin Layer, Parabolized Navier-Stokes solver) for solving supersonic turbulent flow around body and wing-body combinations are presented. As a serial code, TLNS solver is very time consuming and takes a large part of memory due to the iterative and lengthy computations. Also for complicated geometries, an exceeding number of grid...
متن کاملDeriving Imperative Code from Functional Programs Patrice Quinton, Sanjay Rajopadhye, Doran Wilde
Alpha is a data parallel functional language which has the capability of specifying algorithms at a very high level. Our ultimate objective is to generate eecient parallel imperative code from an Alpha program. In this paper, we discuss the related problem of generating eecient single processor imperative code. Analysis techniques that were developed for the synthesis of systolic arrays are ext...
متن کاملCompiler Technology for Parallel Scientiic Computation
There is a need for compiler technology that, given the source program, will generate eecient parallel codes for diierent architectures with minimal user involvement. Parallel computation is becoming indispensable in solving large-scale problems in science and engineering. Yet, the use of parallel computation is limited by the high costs of developing the needed software. To overcome this diicu...
متن کاملDeriving Efficient Parallel Implementations of Algorithms Operating on General Sparse Matrices Using Automatic Program Transformation
We show how efficient implementations can be derived from highlevel functional specifications of numerical algorithms using automatic program transformation. We emphasize the automatic tailoring of implementations for manipulation of sparse data sets. Execution times are reported for a conjugate gradient algorithm.
متن کاملA Thought on Refactoring Java Loops Using Java 8 Streams
Java 8 has introduced a new abstraction called a stream to represent an immutable sequence of elements and to provide a variety of operations to be executed on the elements in series or in parallel. By processing a collection of data in a declarative way, it enables one to write more concise and clean code that can also leverage multi-core architectures without needing a single line of multithr...
متن کامل